<?php
App::uses('AppController', 'Controller');
/**
 * Users Controller
 *
 * @property User $User
 * @property PaginatorComponent $Paginator
 */
class UsersController extends AppController {

/**
 * Components
 *
 * @var array
 */
	public $components = array('Paginator');

/**
 * admin_index method
 *
 * @return void
 */
	public function admin_index() {
		$this->User->recursive = 0;
		$this->set('users', $this->Paginator->paginate());
		$this->set('title_layout', 'Thành viên');
	}

/**
 * view method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function admin_view($id = null) {
		if (!$this->User->exists($id)) {
			throw new NotFoundException(__('Invalid user'));
		}
		$options = array('conditions' => array('User.' . $this->User->primaryKey => $id));
		$this->set('user', $this->User->find('first', $options));
		$this->set('title_layout', 'Xem thông tin chi tiết thành viên');
	}

/**
 * add method
 *
 * @return void
 */
	public function admin_add() {
		if ($this->request->is('post')) {
			$this->request->data['User']['alias'] = $this->get_alias($this->request->data['User']['username']);
			$save = true;
			$result = $this->uploadFile(APP . 'webroot/img/data/avatar/', 'User', 'avatar');
			if($result['status'] == true) {
				$img = '/img/data/avatar/' . $result['filename'];
				$this->request->data['User']['avatar'] = $img;
			}else {
				$save = false;
				$this->Session->setFlash('<button class="close" data-dismiss="alert" type="button">×</button>Không upload được hình ảnh. Vui lòng thử lại', 'default', array('class' => 'alert alert-error'), 'bad');
			}
			
			if($save == true) {
				$this->User->create();
				if ($this->User->save($this->request->data)) {
					$this->Session->setFlash('<button class="close" data-dismiss="alert" type="button">×</button>Thêm thành viên mới thành công.', 'default', array('class' => 'alert alert-success'), 'good');
					// pr($this->request->data);
					return $this->redirect(array('action' => 'admin_index'));
				} else {
					$this->Session->setFlash('<button class="close" data-dismiss="alert" type="button">×</button>Không thêm được thành viên. Vui lòng thử lại', 'default', array('class' => 'alert alert-error'), 'bad');
				}
			}
			
		}
		$groups = $this->User->Group->find('list');
		$this->set(compact('groups'));
		$this->set('title_layout', 'Thêm thành viên mới');
	}

/**
 * edit method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function admin_edit($id = null) {
		if (!$this->User->exists($id)) {
			throw new NotFoundException(__('Invalid user'));
		}
		if ($this->request->is(array('post', 'put'))) {
			$this->request->data['User']['alias'] = $this->get_alias($this->request->data['User']['username']);
			$save = true;
			if($this->request->data['User']['thumbnail']['name'] != ''){
				$result = $this->uploadFile(APP . 'webroot/img/data/avatar/', 'User', 'avatar');
				if($result['status'] == true) {
					$img = '/img/data/avatar/' . $result['img'];
					$this->request->data['User']['avatar'] = $img;
				}else {
					$this->Session->setFlash('Không upload dược hình ảnh. Vui lòng thử lại');
					$save = false;
				}
			}else {
				unset($this->request->data['User']['avatar']);
			}
			
			if($save == true) {
				if ($this->User->save($this->request->data)) {
					$this->Session->setFlash('<button class="close" data-dismiss="alert" type="button">×</button>Sửa thông tin thành công.', 'default', array('class' => 'alert alert-success'), 'good');
					return $this->redirect(array('action' => 'admin_index'));
				} else {
					$this->Session->setFlash('<button class="close" data-dismiss="alert" type="button">×</button> Không lưu được thông tin. Vui lòng thử lại', 'default', array('class' => 'alert alert-error'), 'bad');
				}
			}
			
		} else {
			$options = array('conditions' => array('User.' . $this->User->primaryKey => $id));
			$this->request->data = $this->User->find('first', $options);
			unset($this->request->data['password']);
		}
		$groups = $this->User->Group->find('list');
		$this->set(compact('groups'));
		$this->set('title_layout', 'Sửa thông tin thành viên');
	}

/**
 * delete method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function admin_delete($id = null) {
		$this->User->id = $id;
		if (!$this->User->exists()) {
			throw new NotFoundException(__('Invalid user'));
		}
		$this->request->onlyAllow('post', 'delete');
		if ($this->User->delete()) {
			$this->Session->setFlash('<button class="close" data-dismiss="alert" type="button">×</button>Xóa thông tin thành công.', 'default', array('class' => 'alert alert-success'), 'good');
		} else {
			$this->Session->setFlash('<button class="close" data-dismiss="alert" type="button">×</button> Không xóa được thông tin. Vui lòng thử lại', 'default', array('class' => 'alert alert-error'), 'bad');
		}
		return $this->redirect(array('action' => 'admin_index'));
	}
	
	public function login() {
		if($this->request->is('post')){
			if($this->Auth->login()) {
				$this->Session->setFlash('Đăng nhập thành công.', 'default', array(), 'auth');
				$this->redirect($this->Auth->redirect());
			}else {
				$this->Session->setFlash('Đăng nhập thất bại.', 'default', array(), 'auth');
			}
		}
	}
	
	public function logout() {
		$this->redirect($this->Auth->logout());
	}
	
	public function register() {
		if($this->request->is('post')){
		// pr($this->request->data);exit;
			$this->User->set($this->request->data);
			if($this->User->validates()) {
				if(strcmp($this->request->data['User']['password'], $this->request->data['User']['re_password']) == 0) {
					$this->request->data['User']['alias'] = $this->get_alias($this->request->data['User']['username']);
					$save = true;
					$result = $this->uploadFile(APP . 'webroot/img/data/avatar/', 'User', 'avatar');
					if($result['status'] == true) {
						$img = '/img/data/avatar/' . $result['filename'];
						$this->request->data['User']['avatar'] = $img;
					}else {
						$save = false;
						$this->Session->setFlash('Không upload được hình ảnh. Vui lòng thử lại', 'default', array(), 'auth');
					}
					
					if($save == true) {
						$this->User->create();
						if ($this->User->save($this->request->data)) {
							$id = $this->User->id;
							$this->request->data['User'] = array_merge($this->request->data['User'], array('id' => $id));
							$this->Auth->login($this->request->data['User']);
							return $this->redirect(DOMAIN_ROOT);
							//return $this->redirect(array('controller' => 'games', 'action' => 'index'));
						} else {
							$this->Session->setFlash('Không thêm được thành viên. Vui lòng thử lại', 'default', array(), 'auth');
						}
					}	
				}else {
					$this->Session->setFlash('Xác nhận mật khẩu không đúng.', 'default', array(), 'auth');
				}
				
			}else {
				$this->set('validate_errors', $this->User->validationErrors);
			}
		}
		$this->set('title_for_layout', 'Đăng ký tài khoản trên Nodo Appstore');
	}
	
	//thong tin thanh vien
	public function usercp($id, $alias) {
		$user = $this->get_user();
		if(!$user){
			$this->Session->setFlash('Bạn cần đăng nhập để tiếp tục');
		}else {
			if (!$this->User->exists($id)) {
				throw new NotFoundException(__('Không có thành viên này'));
			}else {
				$user = $this->User->find('first',
					array(
						'conditions' => array('User.id' => $id),
						'recursive' => 0
					)
				);
			}
			// pr($user);
			$this->set(compact('user'));
			
		}
		$this->set('title_layout', 'Xem thông tin chi tiết thành viên');
	}
	
	//doi password
	public function change_password($id, $alias){
		$user = $this->get_user();
		if(!$user) {
			$this->Session->setFlash('Bạn phải đăng nhập để thực hiện chức năng này');
		}else {
			if($this->request->is('post')){
				$this->User->id = $id;
				if(strcmp($this->request->data['User']['password'], $this->request->data['User']['confirm_password']) == 0){
					$this->User->saveField('password', $this->request->data['User']['password']);
					$this->Session->setFlash('Đổi mật khẩu thành công');
					$this->redirect('/thong-tin-tai-khoan/'.$user['id'] . '-' . $user['alias']);
				}else {
					$this->Session->setFlash('Mật khẩu không khớp nhau.');
				}
			}
		}
		$this->set('title_layout', 'Đổi mật khẩu');
	}
}
